// std 是标准库，引入其中处理输入输出的 io 库
// 默认情况下，Rust会将少量标准库中定义的程序项（item）引入到每个程序的作用域中。这些项称作 prelude
// 如果需要的类型不在 prelude 中，你必须使用 use 语句显式地将其引入作用域
use std::io;

fn main() {
    println!("Guess the number!");

    println!("Please input your guess.");

    // 在 Rust 中，变量默认是不可变的。想要让变量可变，可以在变量名前添加 mut
    /*
     ::new 那一行的 :: 语法表明 new 是 String 类型的一个关联函数。
     关联函数（associated function）是实现一种特定类型的函数，
     在这个例子中类型是 String。
     这个 new 函数创建了一个新的空字符串。
     你会在很多类型上找到一个 new 函数，因为它是创建类型实例的惯用函数名
    */
    let mut guess = String::new();

    io::stdin()
        .read_line(&mut guess)
        .expect("Failed to read line");

    println!("You guessed: {}", guess);
}
